LINQ এ Distinct, Union, এবং Intersect মেথডগুলি আপনাকে বিভিন্ন সংগ্রহের মধ্যে ডুপ্লিকেট অপসারণ এবং সামঞ্জস্যপূর্ণ তথ্য খোঁজা করতে সাহায্য করে। এই তিনটি মেথড আপনার ডেটা ম্যানিপুলেশন বা সংগ্রহের বিভিন্ন প্রয়োজনে কার্যকরী হতে পারে।
Distinct
মেথডটি একটি সংগ্রহের মধ্যে ডুপ্লিকেট উপাদানগুলি অপসারণ করতে ব্যবহৃত হয়। এটি একটি নতুন সংগ্রহ তৈরি করে, যেখানে শুধুমাত্র ইউনিক (অদ্বিতীয়) উপাদান থাকবে।
List<int> numbers = new List<int> { 1, 2, 3, 3, 4, 5, 5, 6 };
// ডুপ্লিকেট অপসারণ
var distinctNumbers = numbers.Distinct();
foreach (var num in distinctNumbers)
{
Console.WriteLine(num); // Output: 1, 2, 3, 4, 5, 6
}
এখানে Distinct()
মেথডটি লিস্টের মধ্যে থাকা ডুপ্লিকেট সংখ্যা (যেমন 3 এবং 5) অপসারণ করে শুধুমাত্র ইউনিক সংখ্যা ফিরিয়ে দিয়েছে।
Union
মেথডটি দুটি সংগ্রহের মধ্যে অবিচ্ছিন্ন (distinct) উপাদান একত্রিত করতে ব্যবহৃত হয়। এটি দুটি সংগ্রহের একত্রিত (concatenate) উপাদানগুলো থেকে ডুপ্লিকেট অপসারণ করে একটি নতুন সংগ্রহ তৈরি করে।
List<int> list1 = new List<int> { 1, 2, 3, 4 };
List<int> list2 = new List<int> { 3, 4, 5, 6 };
// দুটি লিস্টের ইউনিক উপাদান একত্রিত করা
var unionList = list1.Union(list2);
foreach (var num in unionList)
{
Console.WriteLine(num); // Output: 1, 2, 3, 4, 5, 6
}
এখানে, Union
মেথড দুটি লিস্টের মধ্যে সাধারণ উপাদানগুলো (৩ এবং ৪) বাদ দিয়ে, সমস্ত ইউনিক উপাদানকে একত্রিত করে একটি নতুন সংগ্রহ তৈরি করেছে।
Intersect
মেথডটি দুটি সংগ্রহের মধ্যে যে উপাদানগুলি সাধারণ, অর্থাৎ উভয় সংগ্রহেই বিদ্যমান, তা বের করে। এটি দুটি সংগ্রহের সামঞ্জস্যপূর্ণ উপাদান রিটার্ন করে এবং ডুপ্লিকেটগুলো বাদ দেয়।
List<int> list1 = new List<int> { 1, 2, 3, 4 };
List<int> list2 = new List<int> { 3, 4, 5, 6 };
// দুটি লিস্টের সাধারণ (common) উপাদান খোঁজা
var intersectList = list1.Intersect(list2);
foreach (var num in intersectList)
{
Console.WriteLine(num); // Output: 3, 4
}
এখানে Intersect
মেথডটি দুটি লিস্টের মধ্যে যে উপাদানগুলো উভয়েই রয়েছে (৩ এবং ৪), তা একত্রিত করে রিটার্ন করেছে।
ধরা যাক, আমাদের একটি Employee
ক্লাস রয়েছে এবং আমরা একই নামের কর্মীদের অপসারণ করতে চাই।
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Employee> employees = new List<Employee>
{
new Employee { Name = "Alice", Age = 25 },
new Employee { Name = "Bob", Age = 30 },
new Employee { Name = "Alice", Age = 28 },
new Employee { Name = "Charlie", Age = 35 }
};
// Distinct - Name অনুযায়ী ইউনিক কর্মী নির্বাচন
var distinctEmployees = employees.Distinct().ToList();
foreach (var emp in distinctEmployees)
{
Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}");
}
এখানে Distinct()
দ্বারা একই নামের কর্মী গুলি অপসারণ করা হবে।
List<Employee> list1 = new List<Employee>
{
new Employee { Name = "Alice", Age = 25 },
new Employee { Name = "Bob", Age = 30 }
};
List<Employee> list2 = new List<Employee>
{
new Employee { Name = "Bob", Age = 30 },
new Employee { Name = "Charlie", Age = 35 }
};
// দুটি লিস্টের ইউনিক কর্মী একত্রিত করা
var unionEmployees = list1.Union(list2, new EmployeeComparer()).ToList();
foreach (var emp in unionEmployees)
{
Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}");
}
এখানে, EmployeeComparer
একটি custom comparer যা Name
এবং Age
প্রপার্টির উপর ভিত্তি করে কর্মীদের তুলনা করে।
List<Employee> list1 = new List<Employee>
{
new Employee { Name = "Alice", Age = 25 },
new Employee { Name = "Bob", Age = 30 }
};
List<Employee> list2 = new List<Employee>
{
new Employee { Name = "Bob", Age = 30 },
new Employee { Name = "Charlie", Age = 35 }
};
// দুটি লিস্টের সাধারণ (common) কর্মী খোঁজা
var intersectEmployees = list1.Intersect(list2, new EmployeeComparer()).ToList();
foreach (var emp in intersectEmployees)
{
Console.WriteLine($"Name: {emp.Name}, Age: {emp.Age}");
}
এখানে Intersect
মেথডটি Bob নামের কর্মীকে উভয় লিস্টের মধ্যে সাধারণ উপাদান হিসেবে নির্বাচন করবে।
এই তিনটি মেথডটি ডেটা ম্যানিপুলেশন এবং ফিল্টারিং এর ক্ষেত্রে খুবই কার্যকরী।
common.read_more